home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / objdraw3.chipram < prev    next >
Text File  |  1997-01-31  |  40KB  |  2,798 lines

  1.  
  2. currzone: dc.w 0
  3.  
  4. ty3d: dc.l -100*1024
  5. by3d: dc.l 1*1024
  6.  
  7. TOPOFROOM: dc.l 0
  8. BOTOFROOM: dc.l 0
  9. AFTERWATTOP: dc.l 0
  10. AFTERWATBOT: dc.l 0
  11. BEFOREWATTOP: dc.l 0
  12. BEFOREWATBOT: dc.l 0
  13. ROOMBACK: dc.l 0
  14.  
  15. objclipt: dc.w 0
  16. objclipb: dc.w 0
  17. rightclipb: dc.w 0
  18. leftclipb: dc.w 0
  19.  
  20. ObjDraw:
  21.  
  22.  move.w (a0)+,d0
  23.  cmp.w #1,d0
  24.  blt.s beforewat
  25.  beq.s afterwat
  26.  bgt.s fullroom
  27.  
  28. beforewat:
  29.  move.l BEFOREWATTOP,ty3d
  30.  move.l BEFOREWATBOT,by3d
  31.  bra.s donetopbot
  32.  
  33. afterwat:
  34.  move.l AFTERWATTOP,ty3d
  35.  move.l AFTERWATBOT,by3d
  36.  bra.s donetopbot
  37.  
  38. fullroom:
  39.  move.l TOPOFROOM(pc),ty3d
  40.  move.l BOTOFROOM(pc),by3d
  41.  
  42. donetopbot:
  43.  
  44. ; move.l (a0)+,by3d
  45. ; move.l (a0)+,ty3d
  46.  
  47.  movem.l d0-d7/a1-a6,-(a7)
  48.  
  49.  move.w rightclip,d0
  50.  sub.w leftclip,d0
  51.  subq #1,d0
  52.  ble doneallinfront 
  53.  
  54. ; CACHE_ON d6
  55.  
  56.  move.l ObjectData,a1
  57.  move.l #ObjRotated,a2
  58.  move.l #depthtable,a3
  59.  move.l a3,a4
  60.  move.w #79,d7
  61. emptytab:
  62.  move.l #$80010000,(a3)+
  63.  dbra d7,emptytab
  64.  
  65.  moveq #0,d0
  66. insertanobj
  67.  move.w (a1),d1
  68.  blt sortedall
  69.  move.w GraphicRoom(a1),d2
  70.  cmp.w currzone(pc),d2
  71.  beq.s itsinthiszone 
  72.  
  73. notinthiszone:
  74.  adda.w #64,a1
  75.  addq #1,d0
  76.  bra insertanobj
  77.  
  78. itsinthiszone:
  79.  
  80.  move.b DOUPPER,d4
  81.  move.b ObjInTop(a1),d3
  82.  eor.b d4,d3
  83.  bne.s notinthiszone
  84.  
  85.  move.w 2(a2,d1.w*8),d1    ; zpos
  86.  
  87.  move.l #depthtable-4,a4
  88. stillinfront:
  89.  addq #4,a4
  90.  cmp.w (a4),d1
  91.  blt stillinfront
  92.  move.l #enddepthtab-4,a5
  93. finishedshift
  94.  move.l -(a5),4(a5)
  95.  cmp.l a4,a5
  96.  bgt.s finishedshift
  97.  
  98.  move.w d1,(a4)
  99.  move.w d0,2(a4)
  100.  
  101.  adda.w #64,a1
  102.  addq #1,d0
  103.  
  104.  bra insertanobj
  105.  
  106. sortedall:
  107.  
  108.  move.l #depthtable,a3
  109.  
  110. gobackanddoanother
  111.  move.w (a3)+,d0
  112.  ble.s doneallinfront
  113.  
  114.  move.w (a3)+,d0
  115.  bsr DrawtheObject
  116.  bra gobackanddoanother
  117.  
  118. doneallinfront
  119.  
  120.  movem.l (a7)+,d0-d7/a1-a6
  121.  rts
  122.  
  123. depthtable: ds.l 80
  124. enddepthtab:
  125.  
  126. DrawtheObject:
  127.  
  128.  movem.l d0-d7/a0-a6,-(a7)
  129.   
  130.  move.l ObjectData,a0
  131.  move.l #ObjRotated,a1
  132.  asl.w #6,d0
  133.  adda.w d0,a0
  134.  
  135.  move.w (a0),d0
  136.  move.w 2(a1,d0.w*8),d1    ; z pos
  137.  
  138. ; Go through clip pts to see which
  139. ; apply.
  140.  
  141. ; move.w #0,d2    ; leftclip
  142. ; move.w #96,d3  ; rightclip
  143.  
  144. ; move.l EndOfClipPt,a6
  145. ;checkclips:
  146. ; subq #8,a6
  147. ; cmp.l #ClipTable,a6
  148. ; blt outofcheckclips
  149.  
  150. ; cmp.w 2(a6),d1
  151. ; bgt.s cantleft
  152. ; move.w (a6),d4
  153. ; cmp.w d4,d2
  154. ; bgt.s cantleft
  155. ; move.w d4,d2
  156. ;cantleft:
  157.  
  158. ; cmp.w 6(a6),d1
  159. ; bgt.s cantright
  160. ; move.w 4(a6),d4
  161. ; cmp.w d4,d3
  162. ; blt.s cantright
  163. ; move.w d4,d3
  164. ;cantright:
  165.  
  166. ;outofcheckclips:
  167.  
  168. ; move.w d2,leftclipb
  169. ; move.w d3,rightclipb
  170.  
  171.  move.w leftclip,leftclipb
  172.  move.w rightclip,rightclipb
  173.  
  174.  cmp.b #$ff,6(a0)
  175.  bne BitMapObj
  176.  
  177.  bsr PolygonObj
  178.  movem.l (a7)+,d0-d7/a0-a6
  179.  rts
  180.  
  181. glassobj:
  182.  move.w (a0)+,d0    ;pt num
  183.  move.w 2(a1,d0.w*8),d1
  184.  cmp.w #50,d1
  185.  ble objbehind
  186.  
  187.  move.w topclip,d2
  188.  move.w botclip,d3
  189.  
  190.  move.l ty3d,d6
  191.  sub.l yoff,d6
  192.  divs d1,d6
  193.  add.w #40,d6
  194.  cmp.w d3,d6
  195.  bge objbehind
  196.  cmp.w d2,d6
  197.  bge.s .okobtc
  198.  move.w d2,d6
  199. .okobtc:
  200.  move.w d6,objclipt
  201.  
  202.  move.l by3d,d6
  203.  sub.l yoff,d6
  204.  divs d1,d6
  205.  add.w #40,d6
  206.  cmp.w d2,d6
  207.  ble objbehind
  208.  cmp.w d3,d6
  209.  ble.s .okobbc
  210.  move.w d3,d6
  211. .okobbc:
  212.  move.w d6,objclipb
  213.  
  214.  move.l 4(a1,d0.w*8),d0
  215.  move.l (a0)+,d2    ; height
  216.  ext.l d2
  217.  asl.l #7,d2
  218.  sub.l yoff,d2
  219.  divs d1,d2    
  220.  add.w #39,d2
  221.  
  222.  divs d1,d0
  223.  add.w #47,d0    ;x pos of middle
  224.  
  225. ; Need to calculate:
  226. ; Width of object in pixels
  227. ; height of object in pixels
  228. ; horizontal constants
  229. ; vertical constants.
  230.  
  231.  move.l #consttab,a3
  232.  
  233.  moveq #0,d3
  234.  moveq #0,d4
  235.  move.b (a0)+,d3
  236.  move.b (a0)+,d4
  237.  asl.w #7,d3
  238.  asl.w #7,d4
  239.  divs d1,d3 ;width in pixels
  240.  divs d1,d4 ;height in pixels
  241.  sub.w d4,d2
  242.  sub.w d3,d0
  243.  cmp.w rightclipb,d0
  244.  bge objbehind
  245.  add.w d3,d3
  246.  cmp.w objclipb,d2
  247.  bge objbehind
  248.  
  249.  add.w d4,d4
  250.  
  251.  move.w d3,realwidth
  252.  move.w d4,realheight
  253.  
  254. * OBTAIN POINTERS TO HORIZ AND VERT
  255. * CONSTANTS FOR MOVING ACROSS AND
  256. * DOWN THE OBJECT GRAPHIC.
  257.  
  258.  move.w d1,d7
  259.  moveq #0,d6
  260.  move.b 6(a0),d6
  261.  add.w d6,d6
  262.  mulu d6,d7
  263.  move.b -2(a0),d6
  264.  divu d6,d7
  265.  swap d7
  266.  clr.w d7
  267.  swap d7
  268.  
  269.  lea (a3,d7.l*8),a2    ; pointer to
  270.             ; horiz const
  271.  move.w d1,d7
  272.  move.b 7(a0),d6
  273.  add.w d6,d6
  274.  mulu d6,d7
  275.  move.b -1(a0),d6
  276.  divu d6,d7
  277.  swap d7
  278.  clr.w d7
  279.  swap d7
  280.  lea (a3,d7.l*8),a3    ; pointer to
  281.              ; vertical c.
  282.  
  283. * CLIP OBJECT TO TOP AND BOTTOM
  284. * OF THE VISIBLE DISPLAY
  285.  
  286.  moveq #0,d7
  287.  cmp.w objclipt,d2
  288.  bge.s .objfitsontop
  289.  
  290.  sub.w objclipt,d2
  291.  add.w d2,d4    ;new height in
  292.         ;pixels
  293.  ble objbehind  ; nothing to draw
  294.  
  295.  move.w d2,d7
  296.  neg.w d7    ; factor to mult.
  297.          ; constants by
  298.          ; at top of obj.
  299.  move.w objclipt,d2
  300.  
  301. .objfitsontop:
  302.  
  303.  move.w objclipb,d6
  304.  sub.w d2,d6
  305.  cmp.w d6,d4
  306.  ble.s .objfitsonbot
  307.  
  308.  move.w d6,d4
  309.  
  310. .objfitsonbot:
  311.  
  312.  subq #1,d4
  313.  blt objbehind
  314.  
  315.  move.l #ontoscr,a6
  316.  move.l (a6,d2.w*4),d2
  317.  add.l frompt,d2
  318.  move.l d2,toppt
  319.  
  320.  move.l #WorkSpace,a5
  321.  move.l #glassball,a4
  322.  cmp.w leftclipb,d0
  323.  bge.s .okonleft
  324.  
  325.  sub.w leftclipb,d0
  326.  add.w d0,d3
  327.  ble objbehind
  328.  
  329.  move.w (a2),d1
  330.  move.w 2(a2),d2
  331.  neg.w d0
  332.  muls d0,d1
  333.  mulu d0,d2
  334.  swap d2
  335.  add.w d2,d1
  336.  asl.w #7,d1
  337.  lea (a5,d1.w),a5
  338.  lea (a4,d1.w),a4
  339.  
  340.  move.w leftclipb,d0
  341.  
  342. .okonleft:
  343.  
  344.  move.w d0,d6
  345.  add.w d3,d6
  346.  sub.w rightclipb,d6
  347.  blt.s .okrightside
  348.  
  349.  sub.w #1,d3
  350.  sub.w d6,d3
  351.  
  352. .okrightside:
  353.  
  354.  move.l #objintocop,a1
  355.  lea (a1,d0.w*2),a1
  356.  
  357.  move.w (a3),d5
  358.  move.w 2(a3),d6
  359.  muls d7,d5
  360.  mulu d7,d6
  361.  swap d6
  362.  add.w d6,d5
  363. ; add.w 2(a0),d5    ;d5 contains
  364.          ;top offset into
  365.          ;each strip.
  366.  add.l #$80000000,d5
  367.      
  368.  move.l (a2),d6
  369.  moveq.l #0,d7
  370.  move.l a5,midobj
  371.  move.l a4,midglass
  372.  move.l (a3),d2
  373.  swap d2
  374.  move.l #times128,a0
  375.  
  376.  movem.l d0-d7/a0-a6,-(a7)
  377.  
  378.  move.w d3,d1
  379.  ext.l d1
  380.  swap d1
  381.  move.w d4,d2
  382.  ext.l d2
  383.  swap d2
  384.  asr.l #6,d1
  385.  asr.l #6,d2
  386.  move.w d1,d5
  387.  move.w d2,d6
  388.  swap d1
  389.  add.w d1,d1
  390.  swap d2
  391.  
  392.  muls #104*4,d2
  393.  
  394.  move.l #WorkSpace,a0
  395.  
  396.  move.w #63,d0
  397. .readinto:
  398.  swap d0
  399.  move.w #63,d0
  400.  move.l toppt(pc),a6
  401.  adda.w (a1),a6
  402.  add.w d1,a1
  403.  add.w d5,d7
  404.  bcc.s .noadmoreh
  405.  addq #2,a1
  406. .noadmoreh:
  407.  swap d7
  408.  move.w #0,d7 
  409. .readintodown:
  410.  move.w (a6),d3
  411.  move.w d3,(a0)+
  412.  add.w d2,a6
  413.  add.w d6,d7
  414.  bcc.s .noadmore
  415.  adda.w #104*4,a6
  416. .noadmore:
  417.  dbra d0,.readintodown
  418.  swap d0
  419.  swap d7
  420.  dbra d0,.readinto
  421.  
  422.  
  423. ; Want to zoom an area d3*d4
  424. ; in size up to 64*64 in size.
  425. ; move.l #WorkSpace,a0
  426. ; move.l frompt,a2
  427. ; move.w #104*4,d3
  428. ; move.w #1,d6
  429. ;.ribl
  430. ; move.w #31,d0
  431. ;.readinto
  432. ; move.w #15,d1
  433. ; move.l a2,a1
  434. ;.readintodown
  435. ; move.w (a1),(a0)+
  436. ; adda.w d3,a1
  437. ; move.w (a1),(a0)+
  438. ; adda.w d3,a1
  439. ; move.w (a1),(a0)+
  440. ; adda.w d3,a1
  441. ; move.w (a1),(a0)+
  442. ; adda.w d3,a1
  443. ; dbra d1,.readintodown
  444. ;; add.w #256-128,a0
  445. ; addq #4,a2
  446. ; dbra d0,.readinto
  447. ; addq #4,a2
  448. ; dbra d6,.ribl
  449.  
  450.  movem.l (a7)+,d0-d7/a0-a6
  451.  
  452.  move.l #darkentab,a2
  453.  
  454. .drawrightside:
  455.  swap d7
  456.  move.l midglass(pc),a4
  457.  adda.w (a0,d7.w*2),a4
  458.  swap d7
  459.  add.l d6,d7
  460.  move.l toppt(pc),a6
  461.  adda.w (a1)+,a6
  462.  
  463.  move.l d5,d1
  464.  move.w d4,-(a7)
  465.  swap d3
  466. .drawavertstrip
  467.  move.w (a4,d1.w*2),d3
  468.  blt.s .itsbackground
  469.  move.w (a5,d3.w*2),d3
  470.  move.w (a2,d3.w*2),(a6)
  471. .itsbackground
  472.  adda.w #104*4,a6
  473.  addx.l d2,d1
  474.  dbra d4,.drawavertstrip
  475.  swap d3
  476.  move.w (a7)+,d4
  477.  
  478.  dbra d3,.drawrightside
  479.  movem.l (a7)+,d0-d7/a0-a6
  480.  
  481.  rts
  482.  
  483. realwidth: dc.w 0
  484. realheight: dc.w 0
  485.  
  486. midglass:
  487.  dc.l 0
  488. times128:
  489. val SET 0
  490.  REPT 100
  491.  dc.w val*128
  492. val SET val+1
  493.  ENDR
  494.  
  495. BitMapObj
  496.  
  497.  tst.l 8(a0)
  498.  blt glassobj
  499.  
  500.  move.w (a0)+,d0    ;pt num
  501.  move.w 2(a1,d0.w*8),d1
  502.  cmp.w #50,d1
  503.  ble objbehind
  504.  
  505.  move.w topclip,d2
  506.  move.w botclip,d3
  507.  
  508.  move.l ty3d,d6
  509.  sub.l yoff,d6
  510.  divs d1,d6
  511.  add.w #40,d6
  512.  cmp.w d3,d6
  513.  bge objbehind
  514.  cmp.w d2,d6
  515.  bge.s .okobtc
  516.  move.w d2,d6
  517. .okobtc:
  518.  move.w d6,objclipt
  519.  
  520.  move.l by3d,d6
  521.  sub.l yoff,d6
  522.  divs d1,d6
  523.  add.w #40,d6
  524.  cmp.w d2,d6
  525.  ble objbehind
  526.  cmp.w d3,d6
  527.  ble.s .okobbc
  528.  move.w d3,d6
  529. .okobbc:
  530.  move.w d6,objclipb
  531.  
  532.  move.l 4(a1,d0.w*8),d0
  533.  move.w d1,d6
  534.  asr.w #7,d6
  535.  add.w (a0)+,d6
  536.  bge.s brighttoonot
  537.  moveq #0,d6
  538. brighttoonot
  539.  sub.l a4,a4
  540.  move.w objscalecols(pc,d6.w*2),a4
  541.  bra pastobjscale
  542.  
  543. objscalecols:
  544.  dcb.w  2,64*0
  545.  dcb.w  4,64*1
  546.  dcb.w  4,64*2
  547.  dcb.w  4,64*3
  548.  dcb.w  4,64*4
  549.  dcb.w  4,64*5
  550.  dcb.w  4,64*6
  551.  dcb.w  4,64*7
  552.  dcb.w  4,64*8
  553.  dcb.w  4,64*9
  554.  dcb.w  4,64*10
  555.  dcb.w  4,64*11
  556.  dcb.w  4,64*12
  557.  dcb.w  4,64*13
  558.  dcb.w  20,64*14
  559.  
  560. pastobjscale:
  561.  
  562.  move.w (a0)+,d2    ; height
  563.  ext.l d2
  564.  asl.l #7,d2
  565.  sub.l yoff,d2
  566.  divs d1,d2    
  567.  add.w #39,d2
  568.  
  569.  divs d1,d0
  570.  add.w #47,d0    ;x pos of middle
  571.  
  572. ; Need to calculate:
  573. ; Width of object in pixels
  574. ; height of object in pixels
  575. ; horizontal constants
  576. ; vertical constants.
  577.  
  578.  move.l #consttab,a3
  579.  
  580.  moveq #0,d3
  581.  moveq #0,d4
  582.  move.b (a0)+,d3
  583.  move.b (a0)+,d4
  584.  lsl.w #7,d3
  585.  lsl.w #7,d4
  586.  divs d1,d3 ;width in pixels
  587.  divs d1,d4 ;height in pixels
  588.  sub.w d4,d2
  589.  sub.w d3,d0
  590.  cmp.w rightclipb,d0
  591.  bge objbehind
  592.  add.w d3,d3
  593.  cmp.w objclipb,d2
  594.  bge objbehind
  595.  
  596.  add.w d4,d4
  597.  
  598. * OBTAIN POINTERS TO HORIZ AND VERT
  599. * CONSTANTS FOR MOVING ACROSS AND
  600. * DOWN THE OBJECT GRAPHIC.
  601.  move.l #Objects,a5
  602.  move.w (a0),d7
  603.  asl.w #4,d7
  604.  adda.w d7,a5    ; ptr to object data.
  605.  move.l (a5)+,WAD_PTR
  606.  move.l (a5)+,PTR_PTR
  607.  add.l 4(a5),a4
  608.  move.l (a5),a5 
  609.  move.w 2(a0),d7
  610.  move.l (a5,d7.w*4),d7
  611.  move.l d7,tstddd
  612.  move.w d7,DOWN_STRIP
  613.  move.l PTR_PTR,a5
  614.  swap d7
  615.  adda.w d7,a5
  616.  
  617.  move.w d1,d7
  618.  moveq #0,d6
  619.  move.b 6(a0),d6
  620.  add.w d6,d6
  621.  mulu d6,d7
  622.  moveq #0,d6
  623.  move.b -2(a0),d6
  624.  divu d6,d7
  625.  swap d7
  626.  clr.w d7
  627.  swap d7
  628.  lea (a3,d7.l*8),a2    ; pointer to
  629.             ; horiz const
  630.  move.w d1,d7
  631.  move.b 7(a0),d6
  632.  add.w d6,d6
  633.  mulu d6,d7
  634.  moveq #0,d6
  635.  move.b -1(a0),d6
  636.  divu d6,d7
  637.  swap d7
  638.  clr.w d7
  639.  swap d7
  640.  lea (a3,d7.l*8),a3    ; pointer to
  641.              ; vertical c.
  642.  
  643. * CLIP OBJECT TO TOP AND BOTTOM
  644. * OF THE VISIBLE DISPLAY
  645.  
  646.  moveq #0,d7
  647.  cmp.w objclipt,d2
  648.  bge.s objfitsontop
  649.  
  650.  sub.w objclipt,d2
  651.  add.w d2,d4    ;new height in
  652.         ;pixels
  653.  ble objbehind  ; nothing to draw
  654.  
  655.  move.w d2,d7
  656.  neg.w d7    ; factor to mult.
  657.          ; constants by
  658.          ; at top of obj.
  659.  move.w objclipt,d2
  660.  
  661. objfitsontop:
  662.  
  663.  move.w objclipb,d6
  664.  sub.w d2,d6
  665.  cmp.w d6,d4
  666.  ble.s objfitsonbot
  667.  
  668.  move.w d6,d4
  669.  
  670. objfitsonbot:
  671.  
  672.  subq #1,d4
  673.  blt objbehind
  674.  
  675.  move.l #ontoscr,a6
  676.  move.l (a6,d2.w*4),d2
  677.  add.l frompt,d2
  678.  move.l d2,toppt
  679.  
  680.  cmp.w leftclipb,d0
  681.  bge.s okonleft
  682.  
  683.  sub.w leftclipb,d0
  684.  add.w d0,d3
  685.  ble objbehind
  686.  
  687.  move.w (a2),d1
  688.  move.w 2(a2),d2
  689.  neg.w d0
  690.  muls d0,d1
  691.  mulu d0,d2
  692.  swap d2
  693.  add.w d2,d1
  694.  lea (a5,d1.w*4),a5
  695.  
  696.  move.w leftclipb,d0
  697.  
  698. okonleft:
  699.  
  700.  move.w d0,d6
  701.  add.w d3,d6
  702.  sub.w rightclipb,d6
  703.  blt.s okrightside
  704.  
  705.  sub.w #1,d3
  706.  sub.w d6,d3
  707.  
  708. okrightside:
  709.  
  710.  move.l #objintocop,a1
  711.  lea (a1,d0.w*2),a1
  712.  
  713.  move.w (a3),d5
  714.  move.w 2(a3),d6
  715.  muls d7,d5
  716.  mulu d7,d6
  717.  swap d6
  718.  add.w d6,d5
  719.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  720.          ;top offset into
  721.          ;each strip.
  722.  add.l #$80000000,d5
  723.      
  724.  move.l (a2),a2
  725.  moveq.l #0,d7
  726.  move.l a5,midobj
  727.  move.l (a3),d2
  728.  swap d2
  729.  
  730. drawrightside:
  731.  swap d7
  732.  move.l midobj(pc),a5
  733.  lea (a5,d7.w*4),a5
  734.  swap d7
  735.  add.l a2,d7
  736.  move.l WAD_PTR(PC),a0
  737.  
  738.  move.l toppt(pc),a6
  739.  adda.w (a1)+,a6
  740.  move.l (a5),d1
  741.  beq blankstrip
  742.  
  743.  and.l #$ffffff,d1
  744.  add.l d1,a0
  745.  
  746.  move.b (a5),d1
  747.  cmp.b #1,d1
  748.  bgt.s ThirdThird
  749.  beq.s SecThird
  750.  move.l d5,d6
  751.  move.l d5,d1
  752.  move.w d4,-(a7)
  753. .drawavertstrip
  754.  move.b 1(a0,d1.w*2),d0
  755.  and.b #%00011111,d0
  756.  beq.s .dontplotthisoneitsblack
  757.  move.w (a4,d0.w*2),(a6)
  758. .dontplotthisoneitsblack:
  759.  adda.w #104*4,a6
  760.  add.l d2,d6
  761.  addx.w d2,d1
  762.  dbra d4,.drawavertstrip
  763.  move.w (a7)+,d4
  764. blankstrip:
  765.  dbra d3,drawrightside
  766.  bra.s objbehind
  767.  
  768. SecThird:
  769.  move.l d5,d1
  770.  move.l d5,d6
  771.  move.w d4,-(a7)
  772. .drawavertstrip
  773.  move.w (a0,d1.w*2),d0
  774.  lsr.w #5,d0
  775.  and.w #%11111,d0
  776.  beq.s .dontplotthisoneitsblack
  777.  move.w (a4,d0.w*2),(a6)
  778. .dontplotthisoneitsblack:
  779.  adda.w #104*4,a6
  780.  add.l d2,d6
  781.  addx.w d2,d1
  782.  dbra d4,.drawavertstrip
  783.  move.w (a7)+,d4
  784.  dbra d3,drawrightside
  785.  bra.s objbehind
  786.  
  787. ThirdThird:
  788.  move.l d5,d1
  789.  move.l d5,d6
  790.  move.w d4,-(a7)
  791. .drawavertstrip
  792.  move.b (a0,d1.w*2),d0
  793.  lsr.b #2,d0
  794.  and.b #%11111,d0
  795.  beq.s .dontplotthisoneitsblack
  796.  move.w (a4,d0.w*2),(a6)
  797. .dontplotthisoneitsblack:
  798.  adda.w #104*4,a6
  799.  add.l d2,d6
  800.  addx.w d2,d1
  801.  dbra d4,.drawavertstrip
  802.  move.w (a7)+,d4
  803.  dbra d3,drawrightside
  804.  
  805. objbehind:
  806.  movem.l (a7)+,d0-d7/a0-a6
  807.  rts
  808.  
  809. midx: dc.w 0
  810. objpixwidth: dc.w 0
  811. tmptst: dc.l 0
  812. toppt: dc.l 0
  813. doneit: dc.w 0
  814. replaceend: dc.w 0
  815. saveend: dc.w 0
  816. midobj: dc.l 0
  817. obadd: dc.l 0 
  818. DOWN_STRIP: dc.w 0
  819. WAD_PTR: dc.l 0
  820. PTR_PTR: dc.l 0
  821.  
  822.  ds.w 100
  823. objintocop:
  824.  incbin "XTOCOPX"
  825.  ds.w 100
  826.  
  827.    *********************************
  828. ***************************************
  829.    ********************************* 
  830. tstddd: dc.l 0 
  831.  
  832. polybehind:
  833.  rts
  834.  
  835. objbright:
  836.  dc.w 0
  837. ObjAng: dc.w 0
  838.  
  839. PolygonObj:
  840.  
  841. ************************
  842.  
  843. ; move.w 4(a0),d0    ; ypos
  844. ; move.w 2(a0),d1
  845. ; add.w #2,d1
  846. ; add.w d1,d0
  847. ; cmp.w #-48,d0
  848. ; blt nobounce
  849. ; neg.w d1
  850. ; add.w d1,d0
  851. ;nobounce:
  852. ; move.w d1,2(a0)
  853. ; move.w d0,4(a0)
  854.  
  855. ; add.w #80*2,boxang
  856. ; and.w #8191,boxang
  857.  
  858. ************************
  859.  
  860.  move.w Facing(a0),ObjAng
  861.  
  862.  move.w (a0)+,d0
  863.  move.w 2(a1,d0.w*8),d1    ; zpos of mid
  864.  ble polybehind
  865.  
  866.  move.w (a0),d2
  867.  move.w d1,d3
  868.  asr.w #7,d3
  869.  add.w d3,d2
  870.  move.w d2,objbright
  871.  
  872.  move.w topclip,d2
  873.  move.w botclip,d3
  874.  
  875.  move.w d2,objclipt
  876.  move.w d3,objclipb
  877.  
  878. ; dont use d1 here.
  879.  
  880.  move.w 6(a0),d5
  881.  move.l #POLYOBJECTS,a3
  882.  move.l (a3,d5.w*4),a3
  883.  
  884.  move.l a3,START_OF_OBJ
  885.  
  886. *******************************************************************
  887. ***************************************************************
  888. *****************************************************************
  889.  
  890.  move.w (a3)+,num_points
  891.  move.w (a3)+,d6    ; num_frames
  892.  
  893.  
  894.  move.l a3,POINTER_TO_POINTERS
  895.  lea (a3,d6.w*2),a3
  896.  
  897.  move.l a3,LinesPtr
  898.  
  899.  moveq #0,d5
  900.  move.w 8(a0),d5
  901.  
  902. ************************************************
  903. * Just for charles (animate automatically)
  904. ; add.w #1,d5
  905. ; cmp.w d6,d5
  906. ; blt.s okless
  907. ; moveq #0,d5
  908. ;okless:
  909. ; move.w d5,8(a0)
  910. ************************************************ 
  911.  
  912.  move.l POINTER_TO_POINTERS,a4
  913.  move.w (a4,d5.w*2),d5
  914.  add.l START_OF_OBJ,d5
  915.  move.l d5,PtsPtr
  916.  move.l d5,a3
  917.  move.w num_points,d5
  918.  subq #1,d5
  919.  
  920.  move.l #boxrot,a4
  921.  
  922.  move.w ObjAng,d2
  923.  sub.w #2048,d2
  924.  sub.w angpos,d2
  925.  and.w #8191,d2
  926.  move.l #SineTable,a2
  927.  lea (a2,d2.w),a5
  928.  move.l #boxbrights,a6
  929.      
  930.  move.w (a5),d6
  931.  move.w 2048(a5),d7
  932.          
  933. rotobj:
  934.  move.w (a3),d2    ; xpt
  935.  move.w 2(a3),d3    ; ypt
  936.  move.w 4(a3),d4    ; zpt
  937.  
  938.  add.w d2,d2
  939.  add.w d3,d3
  940.  add.w d4,d4
  941.  
  942. ; first rotate around z axis.
  943.  
  944. ; move.w d2,d6
  945. ; move.w d3,d7
  946. ; muls 2048(a2),d3
  947. ; muls (a2),d2
  948. ; sub.l d3,d2    ; newx
  949. ; muls (a2),d7
  950. ; muls 2048(a2),d6
  951. ; add.l d7,d6    ; newy
  952. ; add.l d6,d6
  953. ; swap d6
  954. ; add.l d2,d2
  955. ; swap d2
  956. ; move.w d6,d3    ; newy
  957.  
  958.  muls d7,d4
  959.  muls d6,d2
  960.  sub.l d4,d2
  961.  asr.l #8,d2
  962.  move.l d2,(a4)+
  963.  ext.l d3
  964.  asl.l #7,d3
  965.  move.l d3,(a4)+
  966.  move.w (a3),d2
  967.  move.w 4(a3),d4
  968.  muls d6,d4
  969.  muls d7,d2
  970.  add.l d2,d4
  971.  add.l d4,d4
  972.  add.l d4,d4
  973.  swap d4
  974.  move.w d4,(a4)+
  975.  
  976.  add.w #20,d4
  977.  asr.w #2,d4
  978.  move.w d4,(a6)+
  979.  
  980.  addq #6,a3
  981.  dbra d5,rotobj 
  982.  
  983.  move.l 4(a1,d0.w*8),d0    ; xpos of mid
  984.  
  985.  move.w num_points,d7
  986.  move.l #boxrot,a2
  987.  move.l #boxonscr,a3
  988.  move.l #boxbrights,a6
  989.  move.w 2(a0),d2
  990.  subq #1,d7
  991.  
  992.  ext.l d2
  993.  asl.l #7,d2
  994.  sub.l yoff,d2
  995. convtoscr
  996.  move.l (a2),d3
  997.  add.l d0,d3
  998.  move.l d3,(a2)+
  999.  move.l (a2),d4
  1000.  add.l d2,d4
  1001.  move.l d4,(a2)+
  1002.  move.w (a2),d5
  1003.  add.w d1,d5
  1004.  ble polybehind
  1005.  move.w d5,(a2)+
  1006.  
  1007.  divs d5,d3
  1008.  divs d5,d4
  1009.  add.w #47,d3
  1010.  add.w #40,d4
  1011.  move.w d3,(a3)+
  1012.  move.w d4,(a3)+
  1013.  
  1014.  move.w (a6),d3
  1015.  
  1016.  cmp.w #13,d3
  1017.  ble.s okdark
  1018.  move.w #13,d3
  1019. okdark:
  1020.  cmp.w #0,d3
  1021.  bge.s okbr
  1022.  move.w #0,d3
  1023. okbr:
  1024.  move.w d3,(a6)+
  1025.  
  1026.  dbra d7,convtoscr
  1027.  
  1028.  move.l LinesPtr,a1
  1029.  
  1030. ; Now need to sort parts of object
  1031. ; into order.
  1032.  
  1033.  move.l #PartBuffer,a0
  1034.  move.l a0,a2
  1035.  move.w #31,d0
  1036. clrpartbuff:
  1037.  
  1038.  move.w #$8001,(a2)
  1039.  addq #4,a2
  1040.  
  1041.  dbra d0,clrpartbuff
  1042.  
  1043.  move.l #boxrot,a2
  1044.  
  1045. PutinParts
  1046.  move.w (a1)+,d7
  1047.  blt doneallparts
  1048.  
  1049.  move.w (a1)+,d6
  1050.  move.l (a2,d6.w),d0
  1051.  asr.l #7,d0
  1052.  muls d0,d0
  1053.  move.l 4(a2,d6.w),d2
  1054.  asr.l #7,d2
  1055.  muls d2,d2
  1056.  add.l d2,d0 
  1057.  move.w 8(a2,d6.w),d2
  1058.  muls d2,d2
  1059.  add.l d2,d0
  1060.  move.l #PartBuffer-8,a0
  1061.  
  1062. stillfront
  1063.  addq #8,a0
  1064.  cmp.l (a0),d0
  1065.  blt stillfront
  1066.  move.l #endparttab-8,a5
  1067. domoreshift:
  1068.  move.l -8(a5),(a5)
  1069.  move.l -4(a5),4(a5)
  1070.  subq #8,a5
  1071.  cmp.l a0,a5
  1072.  bgt.s domoreshift
  1073.  
  1074.  move.l d0,(a0)
  1075.  move.w d7,4(a0)
  1076.  
  1077.  bra PutinParts
  1078.  
  1079. doneallparts:
  1080.  
  1081.  move.l #PartBuffer,a0
  1082.  
  1083. Partloop:
  1084.  move.l (a0)+,d7
  1085.  blt nomoreparts
  1086.  
  1087.  moveq #0,d0
  1088.  move.w (a0),d0
  1089.  addq #4,a0
  1090.  add.l START_OF_OBJ,d0
  1091.  move.l d0,a1
  1092.  move.w #0,firstpt
  1093.  
  1094. polyloo:
  1095.  
  1096.  tst.w (a1)
  1097.  blt.s nomorepolys
  1098.  movem.l a0/a1/d7,-(a7)
  1099.  bsr doapoly
  1100.  movem.l (a7)+,a0/a1/d7
  1101.  
  1102.  move.w (a1),d0
  1103.  lea 18(a1,d0.w*4),a1
  1104.  
  1105.  bra.s polyloo
  1106. nomorepolys
  1107.  
  1108.  bra Partloop
  1109.  
  1110. nomoreparts:
  1111.  rts
  1112.  
  1113. firstpt: dc.w 0
  1114.  
  1115. PartBuffer:
  1116.  ds.w 2*32
  1117. endparttab:
  1118.  
  1119. polybright: dc.l 0
  1120.  
  1121. doapoly:
  1122.  
  1123.  move.w #960,Left
  1124.  move.w #-10,Right
  1125.  
  1126.  move.w (a1)+,d7    ; lines to draw 
  1127.  move.w (a1)+,preholes
  1128.  move.w 12(a1,d7.w*4),pregour
  1129.  move.l #boxonscr,a3
  1130.  move.w firstpt(pc),d0
  1131.  lea (a3,d0.w*4),a3
  1132.  
  1133.  move.w (a1),d0
  1134.  move.w 4(a1),d1
  1135.  move.w 8(a1),d2
  1136.  move.w 2(a3,d0.w*4),d3
  1137.  move.w 2(a3,d1.w*4),d4
  1138.  move.w 2(a3,d2.w*4),d5
  1139.  move.w (a3,d0.w*4),d0
  1140.  move.w (a3,d1.w*4),d1
  1141.  move.w (a3,d2.w*4),d2
  1142.  
  1143.  sub.w d1,d0    ;x1
  1144.  sub.w d1,d2    ;x2
  1145.  sub.w d4,d3    ;y1
  1146.  sub.w d4,d5    ;y2
  1147.  
  1148.  muls d3,d2
  1149.  muls d5,d0
  1150.  sub.l d0,d2
  1151.  ble polybehind
  1152.  move.l d2,polybright
  1153.  
  1154.  clr.b drawit
  1155.  
  1156.  tst.b Gouraud(pc)
  1157.  bne.s usegour
  1158.  bsr putinlines
  1159.  bra.s dontusegour
  1160. usegour:
  1161.  bsr putingourlines
  1162. dontusegour:
  1163.  
  1164.  move.w #104*4,linedir
  1165.  move.l frompt,a6
  1166.  
  1167.  tst.b drawit(pc)
  1168.  beq polybehind
  1169.  
  1170.  move.l #PolyTopTab,a4
  1171.  move.w Left(pc),d1
  1172.  move.w Right(pc),d7
  1173.  
  1174.  move.w leftclipb,d3
  1175.  move.w rightclipb,d4
  1176.  cmp.w d3,d7
  1177.  ble polybehind
  1178.  cmp.w d4,d1
  1179.  bge polybehind
  1180.  cmp.w d3,d1
  1181.  bge .notop
  1182.  move.w d3,d1
  1183. .notop
  1184.  cmp.w d4,d7
  1185.  ble .nobot
  1186.  move.w d4,d7
  1187. .nobot
  1188.  
  1189.  lea (a4,d1.w*8),a4
  1190.  sub.w d1,d7
  1191.  ble polybehind
  1192.  move.l #objintocop,a2
  1193.  lea (a2,d1.w*2),a2
  1194.  moveq #0,d0
  1195.  
  1196.  move.w (a1)+,a0
  1197.  add.l #TextureMaps,a0
  1198.  move.l polybright,d1
  1199.  asl.l #3,d1
  1200.  divs (a1)+,d1
  1201.  
  1202.  tst.b Holes
  1203.  bne gotholesin
  1204.  tst.b Gouraud(pc)
  1205.  bne gotlurvelyshading
  1206.  
  1207.  move.l #objscalecols,a1
  1208.  neg.w d1
  1209.  add.w #14,d1
  1210.  move.w objbright(pc),d0
  1211.  add.w d0,d1
  1212.  bge.s toobright
  1213.  move.w #0,d1
  1214. toobright:
  1215.  move.w (a1,d1.w*2),d1
  1216.  asl.w #3,d1
  1217.  move.l #TexturePal,a1
  1218.  add.w d1,a1
  1219.  
  1220. dopoly:
  1221.  move.w #0,offtopby
  1222.  move.l a6,a3
  1223.  adda.w (a2)+,a3
  1224.  move.w (a4),d1
  1225.  cmp.w objclipb,d1
  1226.  bge nodl
  1227.  move.w PolyBotTab-PolyTopTab(a4),d2
  1228.  cmp.w objclipt,d2
  1229.  ble nodl
  1230.  cmp.w objclipt,d1
  1231.  bge.s nocl
  1232.  move.w objclipt,d3
  1233.  sub.w d1,d3
  1234.  move.w d3,offtopby
  1235.  move.w objclipt,d1
  1236. nocl: 
  1237.  move.w d2,d0
  1238.  cmp.w objclipb,d2
  1239.  ble.s nocr
  1240.  move.w objclipb,d2
  1241. nocr:
  1242.  
  1243.     ; d1=top end
  1244.     ; d2=bot end
  1245.     
  1246.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1247.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1248.     
  1249.  moveq #0,d5
  1250.  move.w 2(a4),d5
  1251.  move.w 4(a4),d6
  1252.  
  1253.  sub.w d5,d3
  1254.  sub.w d6,d4
  1255.  
  1256.  asl.w #8,d3
  1257.  asl.w #8,d4
  1258.  ext.l d3
  1259.  ext.l d4
  1260.  
  1261.  and.b #63,d5
  1262.  and.b #63,d6
  1263.  lsl.w #8,d6
  1264.  move.b d5,d6    ; starting pos
  1265.  moveq.l #0,d5
  1266.  move.w d6,d5
  1267.  
  1268.  sub.w d1,d2
  1269.  ble nodl
  1270.  
  1271.  move.w #0,tstdca
  1272.  sub.w d1,d0
  1273.  tst.w offtopby
  1274.  beq.s .notofftop
  1275.  move.l d3,-(a7)
  1276.  move.l d4,-(a7)
  1277.  add.w offtopby,d0
  1278.      
  1279.  muls offtopby,d3
  1280.  muls offtopby,d4
  1281.  divs d0,d3
  1282.  divs d0,d4
  1283.  asl.l #8,d3
  1284.  asl.l #8,d4
  1285.  move.w d3,tstdca
  1286.  swap d3
  1287.  swap d4
  1288.  and.w #63,d3
  1289.  and.w #63,d4
  1290.  asl.w #8,d4
  1291.  move.b d3,d4
  1292.  add.l d4,d5 
  1293.  move.l (a7)+,d4
  1294.  move.l (a7)+,d3
  1295. .notofftop: 
  1296.  
  1297.  divs d0,d3
  1298.  divs d0,d4
  1299.  ext.l d3
  1300.  ext.l d4
  1301.  asl.l #8,d3
  1302.  asl.l #8,d4
  1303.  
  1304.  move.w d3,a5
  1305.  swap d3
  1306.  swap d4
  1307.  asl.w #8,d4
  1308.  move.b d3,d4
  1309.  move.l d4,d6
  1310.  add.w #256,d6
  1311.  
  1312.  move.w tstdca,d3
  1313.  
  1314.  add.l ontoscr(pc,d1.w*4),a3
  1315.  move.w #63*256+63,d1
  1316.  and.w d1,d4
  1317.  and.w d1,d6
  1318.  moveq #0,d0
  1319.  subq #1,d2
  1320. drawpol:
  1321.  and.w d1,d5
  1322.  move.b (a0,d5.w*4),d0
  1323.  move.w (a1,d0.w*2),(a3)
  1324.  adda.w #104*4,a3
  1325.  add.w a5,d3
  1326.  addx.l d6,d5
  1327.  dbcs d2,drawpol2
  1328.  dbcc d2,drawpol
  1329.  bra.s pastit
  1330. drawpol2:
  1331.  and.w d1,d5
  1332.  move.b (a0,d5.w*4),d0
  1333.  move.w (a1,d0.w*2),(a3)
  1334.  adda.w #104*4,a3
  1335.  add.w a5,d3
  1336.  addx.l d4,d5
  1337.  dbcs d2,drawpol2
  1338.  dbcc d2,drawpol
  1339.  
  1340. pastit:
  1341.  
  1342. nodl:
  1343.  addq #8,a4
  1344.  dbra d7,dopoly
  1345.  
  1346.  rts
  1347.  
  1348. ontoscr:
  1349. val SET 104*4
  1350.  REPT 90
  1351.  dc.l val
  1352. val SET val+104*4
  1353.  ENDR
  1354.  
  1355. tstdca: dc.l 0
  1356. offtopby: dc.w 0
  1357. LinesPtr: dc.l 0
  1358. PtsPtr: dc.l 0
  1359.  
  1360. gotlurvelyshading:
  1361.  move.l #TexturePal,a1
  1362. ; neg.w d1
  1363. ; add.w #14,d1
  1364. ; bge.s toobrightg
  1365. ; move.w #0,d1
  1366. ;toobrightg:
  1367. ; asl.w #8,d1
  1368. ; lea (a1,d1.w*2),a1
  1369.  
  1370. dopolyg:
  1371.  move.l a6,a3
  1372.  move.w #0,offtopby
  1373.  adda.w (a2)+,a3
  1374.  move.w (a4),d1
  1375.  cmp.w objclipb,d1
  1376.  bge nodlg
  1377.  moveq #0,d2
  1378.  move.w PolyBotTab-PolyTopTab(a4),d2
  1379.  cmp.w objclipt(pc),d2
  1380.  ble nodlg
  1381.  cmp.w objclipt(pc),d1
  1382.  bge.s noclg
  1383.  move.w objclipt,d3
  1384.  sub.w d1,d3
  1385.  move.w d3,offtopby
  1386.  move.w objclipt(pc),d1
  1387. noclg: 
  1388.  move.w d2,d0
  1389.  cmp.w objclipb(pc),d2
  1390.  ble.s nocrg
  1391.  move.w objclipb(pc),d2
  1392. nocrg:
  1393.  
  1394.     ; d1=top end
  1395.     ; d2=bot end
  1396.     
  1397.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1398.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1399.     
  1400.  moveq #0,d5
  1401.  move.w 2(a4),d5
  1402.  move.w 4(a4),d6
  1403.  
  1404.  sub.w d5,d3
  1405.  sub.w d6,d4
  1406.  
  1407.  asl.w #8,d3
  1408.  asl.w #8,d4
  1409.  ext.l d3
  1410.  ext.l d4
  1411.  
  1412.  and.b #63,d5
  1413.  and.b #63,d6
  1414.  lsl.w #8,d6
  1415.  move.b d5,d6    ; starting pos
  1416.  moveq.l #0,d5
  1417.  move.w d6,d5
  1418.  
  1419.  sub.w d1,d2
  1420.  ble nodlg
  1421.  
  1422.  move.w #0,tstdca
  1423.  sub.w d1,d0
  1424.  tst.w offtopby
  1425.  beq.s .notofftop
  1426.  move.l d3,-(a7)
  1427.  move.l d4,-(a7)
  1428.  add.w offtopby,d0
  1429.  
  1430.  muls offtopby,d3
  1431.  muls offtopby,d4
  1432.  divs d0,d3
  1433.  divs d0,d4
  1434.  asl.l #8,d3
  1435.  asl.l #8,d4
  1436.  move.w d3,tstdca
  1437.  swap d3
  1438.  swap d4
  1439.  and.w #63,d3
  1440.  and.w #63,d4
  1441.  asl.w #8,d4
  1442.  move.b d3,d4
  1443.  add.l d4,d5
  1444.  move.l (a7)+,d4
  1445.  move.l (a7)+,d3
  1446. .notofftop
  1447.  
  1448.  divs d0,d3
  1449.  divs d0,d4
  1450.  ext.l d3
  1451.  ext.l d4
  1452.  asl.l #8,d3
  1453.  asl.l #8,d4
  1454.  
  1455.  add.l ontoscrg(pc,d1.w*4),a3
  1456.  move.w 6+PolyBotTab-PolyTopTab(a4),d1
  1457.  move.w 6(a4),d6
  1458.  sub.w d6,d1
  1459.  swap d1
  1460.  clr.w d1
  1461.  asr.l #8,d1
  1462.  divs d0,d1
  1463.  asl.l #8,d1
  1464.  swap d1
  1465.  asl.w #8,d1
  1466.  
  1467.  move.w d3,d0
  1468.  swap d0
  1469.  move.w d1,d0
  1470.  move.w d2,d1
  1471.  move.l d1,d2
  1472.  move.l d0,a5
  1473.  move.w tstdca,d0
  1474.  swap d0
  1475.  move.w d6,d0
  1476.  asl.w #8,d0
  1477.  swap d3
  1478.  swap d4
  1479.  asl.w #8,d4
  1480.  move.b d3,d4
  1481.  move.l d4,d6
  1482.  add.w #256,d6
  1483.  
  1484.  moveq #0,d1
  1485.  move.w #63*256+63,d1
  1486.  and.w d1,d4
  1487.  and.w d1,d6
  1488.  dbra d2,drawpolg
  1489.  
  1490. ontoscrg:
  1491. val SET 104*4
  1492.  REPT 90
  1493.  dc.l val
  1494. val SET val+104*4
  1495.  ENDR
  1496.  
  1497. drawpolg: 
  1498.  and.w #63*256+63,d5
  1499.  move.b (a0,d5.w*4),d0
  1500.  move.w (a1,d0.w*2),(a3)
  1501.  adda.w #104*4,a3
  1502.  add.l d2,d1
  1503.  bcc.s nonewb
  1504.  add.w #256,d0
  1505. nonewb:
  1506.  add.l a5,d0
  1507.  addx.l d6,d5
  1508.  dbcs d2,drawpol2g
  1509.  dbcc d2,drawpolg
  1510.  bra.s pastitg
  1511. drawpol2g:
  1512.  and.w #63*256+63,d5
  1513.  move.b (a0,d5.w*4),d0
  1514.  move.w (a1,d0.w*2),(a3)
  1515.  adda.w #104*4,a3
  1516.  add.l d2,d1
  1517.  bcc.s nonewb2
  1518.  add.w #256,d0
  1519. nonewb2:
  1520.  add.l a5,d0
  1521.  addx.l d4,d5
  1522.  dbcs d2,drawpol2g
  1523.  dbcc d2,drawpolg
  1524.  
  1525. pastitg:
  1526.  
  1527. nodlg:
  1528.  addq #8,a4
  1529.  dbra d7,dopolyg
  1530.  
  1531.  rts
  1532.  
  1533.  
  1534.  
  1535. gotholesin:
  1536.  move.l #TexturePal,a1
  1537.  neg.w d1
  1538.  add.w #14,d1
  1539.  bge.s toobrighth
  1540.  move.w #0,d1
  1541. toobrighth:
  1542.  asl.w #8,d1
  1543.  lea (a1,d1.w*2),a1
  1544.  
  1545. dopolyh:
  1546.  move.l a6,a3
  1547.  adda.w (a2)+,a3
  1548.  move.w (a4),d1
  1549.  cmp.w objclipb,d1
  1550.  bge nodlh
  1551.  move.w PolyBotTab-PolyTopTab(a4),d2
  1552.  cmp.w objclipt,d2
  1553.  ble nodlh
  1554.  cmp.w objclipt,d1
  1555.  bge.s noclh
  1556.  move.w objclipt,d1
  1557. noclh: 
  1558.  move.w d2,d0
  1559.  cmp.w objclipb,d2
  1560.  ble.s nocrh
  1561.  move.w objclipb,d2
  1562. nocrh:
  1563.  
  1564.     ; d1=top end
  1565.     ; d2=bot end
  1566.     
  1567.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1568.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1569.     
  1570.  moveq #0,d5
  1571.  move.w 2(a4),d5
  1572.  move.w 4(a4),d6
  1573.  
  1574.  sub.w d5,d3
  1575.  sub.w d6,d4
  1576.  
  1577.  asl.w #8,d3
  1578.  asl.w #8,d4
  1579.  ext.l d3
  1580.  ext.l d4
  1581.  
  1582.  and.b #63,d5
  1583.  and.b #63,d6
  1584.  lsl.w #8,d6
  1585.  move.b d5,d6    ; starting pos
  1586.  moveq #-1,d5
  1587.  lsr.l #1,d5
  1588.  move.w d6,d5
  1589.  
  1590.  sub.w d1,d2
  1591.  ble nodlh
  1592.  
  1593.  sub.w d1,d0
  1594.  
  1595.  divs d0,d3
  1596.  divs d0,d4
  1597.  ext.l d3
  1598.  ext.l d4
  1599.  asl.l #8,d3
  1600.  asl.l #8,d4
  1601.  move.w d3,a5
  1602.  swap d3
  1603.  swap d4
  1604.  asl.w #8,d4
  1605.  move.b d3,d4
  1606.  move.l d4,d6
  1607.  add.w #256,d6
  1608.  
  1609.  moveq #-1,d3
  1610.  lsr.w #1,d3
  1611.  
  1612.  add.l ontoscrh(pc,d1.w*4),a3
  1613.  move.w #63*256+63,d1
  1614.  and.w d1,d4
  1615.  and.w d1,d6
  1616.  moveq #0,d0
  1617.  subq #1,d2
  1618.  
  1619. drawpolh:
  1620.  and.w d1,d5
  1621.  move.b (a0,d5.w*4),d0
  1622.  beq.s dontplot
  1623.  move.w (a1,d0.w*2),(a3)
  1624. dontplot:
  1625.  adda.w #104*4,a3
  1626.  add.w a5,d3
  1627.  addx.l d6,d5
  1628.  dbcs d2,drawpol2h
  1629.  dbcc d2,drawpolh
  1630.  bra.s pastith
  1631. drawpol2h:
  1632.  and.w d1,d5
  1633.  move.b (a0,d5.w*4),d0
  1634.  beq.s dontplot2
  1635.  move.w (a1,d0.w*2),(a3)
  1636. dontplot2:
  1637.  adda.w #104*4,a3
  1638.  add.w a5,d3
  1639.  addx.l d4,d5
  1640.  dbcs d2,drawpol2h
  1641.  dbcc d2,drawpolh
  1642.  
  1643. pastith:
  1644.  
  1645. nodlh:
  1646.  addq #8,a4
  1647.  dbra d7,dopolyh
  1648.  
  1649.  rts
  1650.  
  1651. ontoscrh:
  1652. val SET 0
  1653.  REPT 90
  1654.  dc.l val
  1655. val SET val+104*4
  1656.  ENDR
  1657.  
  1658.  EVEN
  1659. pregour:
  1660.  dc.b 0
  1661. Gouraud:
  1662.  dc.b 0
  1663. preholes:
  1664.  dc.b 0
  1665. Holes: 
  1666.  dc.b 0
  1667.  
  1668. putinlines:
  1669.  
  1670.  move.w (a1),d0
  1671.  move.w 4(a1),d1
  1672.  
  1673.  move.w (a3,d0.w*4),d2
  1674.  move.w 2(a3,d0.w*4),d3
  1675.  move.w (a3,d1.w*4),d4
  1676.  move.w 2(a3,d1.w*4),d5
  1677.  
  1678.  cmp.w d2,d4
  1679.  beq thislineflat
  1680.  bgt thislineontop
  1681.  move.l #PolyBotTab,a4
  1682.  exg d2,d4
  1683.  exg d3,d5
  1684.  
  1685.  cmp.w rightclipb,d2
  1686.  bge thislineflat
  1687.  cmp.w leftclipb,d4
  1688.  ble thislineflat
  1689.  move.w rightclipb,d6
  1690.  sub.w d4,d6
  1691.  ble.s .clipr
  1692.  move.w #0,-(a7)
  1693.  cmp.w Right(pc),d4
  1694.  ble.s .nonewbot
  1695.  move.w d4,Right
  1696.  bra.s .nonewbot
  1697.  
  1698. .clipr
  1699.  move.w d6,-(a7)
  1700.  move.w rightclipb,Right
  1701.  sub.w #1,Right
  1702. .nonewbot:
  1703.  
  1704.  move.w #0,offleftby
  1705.  move.w d2,d6
  1706.  cmp.w leftclipb,d6
  1707.  bge .okt
  1708.  move.w leftclipb,d6
  1709.  sub.w d2,d6
  1710.  move.w d6,offleftby
  1711.  add.w d2,d6
  1712. .okt:
  1713.  
  1714.  st drawit
  1715.  lea (a4,d6.w*8),a4
  1716.  cmp.w Left(pc),d6
  1717.  bge.s .nonewtop
  1718.  move.w d6,Left
  1719. .nonewtop
  1720.  
  1721.  sub.w d3,d5    ; dy
  1722.  swap d3
  1723.  clr.w d3    ; d2=xpos
  1724.  sub.w d2,d4    ; dx > 0
  1725.  swap d5
  1726.  clr.w d5
  1727.  asr.l #8,d5
  1728.  divs d4,d5
  1729.  ext.l d5
  1730.  asl.l #8,d5    ; dx constant
  1731.  moveq #0,d2
  1732.  move.b 2(a1),d2
  1733.  moveq #0,d6
  1734.  move.b 6(a1),d6
  1735.  sub.w d6,d2
  1736.  swap d2
  1737.  swap d6
  1738.  clr.w d2
  1739.  clr.w d6    ; d6=xbitpos
  1740.  asr.l #8,d2
  1741.  divs d4,d2
  1742.  ext.l d2
  1743.  asl.l #8,d2    ; d3=xbitconst
  1744.  move.l d5,a5    ; a5=dy constant
  1745.  move.l d2,a6    ; a6=xbitconst
  1746.  
  1747.  moveq #0,d5
  1748.  move.b 3(a1),d5
  1749.  moveq #0,d2
  1750.  move.b 7(a1),d2
  1751.  sub.w d2,d5
  1752.  swap d2
  1753.  swap d5
  1754.  clr.w d2    ; d3=ybitpos
  1755.  clr.w d5
  1756.  asr.l #8,d5
  1757.  divs d4,d5
  1758.  ext.l d5
  1759.  asl.l #8,d5    ; d4=ybitconst
  1760.  
  1761.  
  1762.  add.w (a7)+,d4
  1763.  sub.w offleftby(pc),d4
  1764.  blt thislineflat
  1765.  
  1766.  tst.w offleftby(pc)
  1767.  beq.s .noneoffleft
  1768.  move.w d4,-(a7)
  1769.  move.w offleftby(pc),d4
  1770.  dbra d4,.calcnodraw
  1771.  bra .nodrawoffleft
  1772. .calcnodraw
  1773.  add.l a5,d3
  1774.  add.l a6,d6
  1775.  add.l d5,d2
  1776.  dbra d4,.calcnodraw
  1777. .nodrawoffleft:
  1778.  move.w (a7)+,d4
  1779. .noneoffleft:
  1780.  
  1781. .putinline:
  1782.  
  1783.  swap d3
  1784.  move.w d3,(a4)+
  1785.  swap d3
  1786.  swap d6
  1787.  move.w d6,(a4)+
  1788.  swap d6
  1789.  swap d2
  1790.  move.w d2,(a4)
  1791.  addq #4,a4
  1792.  swap d2
  1793.  
  1794.  add.l a5,d3
  1795.  add.l a6,d6
  1796.  add.l d5,d2
  1797.  
  1798.  dbra d4,.putinline
  1799.  
  1800.  bra thislineflat
  1801.  
  1802. thislineontop:
  1803.  move.l #PolyTopTab,a4
  1804.  
  1805.  cmp.w rightclipb,d2
  1806.  bge thislineflat
  1807.  cmp.w leftclipb,d4
  1808.  ble thislineflat
  1809.  move.w rightclipb,d6
  1810.  sub.w d4,d6
  1811.  ble.s .clipr
  1812.  move.w #0,-(a7)
  1813.  cmp.w Right(pc),d4
  1814.  ble.s .nonewbot
  1815.  move.w d4,Right
  1816.  bra.s .nonewbot
  1817.  
  1818. .clipr
  1819.  move.w d6,-(a7)
  1820.  move.w rightclipb,Right
  1821.  sub.w #1,Right
  1822. .nonewbot:
  1823.  
  1824.  move.w #0,offleftby
  1825.  move.w d2,d6
  1826.  cmp.w leftclipb,d6
  1827.  bge .okt
  1828.  move.w leftclipb,d6
  1829.  sub.w d2,d6
  1830.  move.w d6,offleftby
  1831.  add.w d2,d6
  1832. .okt:
  1833.  
  1834.  st drawit
  1835.  lea (a4,d6.w*8),a4
  1836.  cmp.w Left(pc),d6
  1837.  bge.s .nonewtop
  1838.  move.w d6,Left
  1839. .nonewtop
  1840.  
  1841.  sub.w d3,d5    ; dy
  1842.  swap d3
  1843.  clr.w d3    ; d2=xpos
  1844.  sub.w d2,d4    ; dx > 0
  1845.  swap d5
  1846.  clr.w d5
  1847.  asr.l #8,d5
  1848.  divs d4,d5
  1849.  ext.l d5
  1850.  asl.l #8,d5    ; dx constant
  1851.  moveq #0,d2
  1852.  move.b 6(a1),d2
  1853.  moveq #0,d6
  1854.  move.b 2(a1),d6
  1855.  sub.w d6,d2
  1856.  swap d2
  1857.  swap d6
  1858.  clr.w d2
  1859.  clr.w d6    ; d6=xbitpos
  1860.  asr.l #8,d2
  1861.  divs d4,d2
  1862.  ext.l d2
  1863.  asl.l #8,d2    ; d3=xbitconst
  1864.  move.l d5,a5    ; a5=dy constant
  1865.  move.l d2,a6    ; a6=xbitconst
  1866.  
  1867.  moveq #0,d5
  1868.  move.b 7(a1),d5
  1869.  moveq #0,d2
  1870.  move.b 3(a1),d2
  1871.  sub.w d2,d5
  1872.  swap d2
  1873.  swap d5
  1874.  clr.w d2    ; d3=ybitpos
  1875.  clr.w d5
  1876.  asr.l #8,d5
  1877.  divs d4,d5
  1878.  ext.l d5
  1879.  asl.l #8,d5    ; d4=ybitconst
  1880.  
  1881.  add.w (a7)+,d4
  1882.  sub.w offleftby(pc),d4
  1883.  blt.s thislineflat
  1884.  
  1885.  tst.w offleftby(pc)
  1886.  beq.s .noneoffleft
  1887.  move.w d4,-(a7)
  1888.  move.w offleftby(pc),d4
  1889.  dbra d4,.calcnodraw
  1890.  bra .nodrawoffleft
  1891. .calcnodraw
  1892.  add.l a5,d3
  1893.  add.l a6,d6
  1894.  add.l d5,d2
  1895.  dbra d4,.calcnodraw
  1896. .nodrawoffleft:
  1897.  move.w (a7)+,d4
  1898. .noneoffleft:
  1899.  
  1900.  
  1901. .putinline:
  1902.  
  1903.  swap d3
  1904.  move.w d3,(a4)+
  1905.  swap d3
  1906.  swap d6
  1907.  move.w d6,(a4)+
  1908.  swap d6
  1909.  swap d2
  1910.  move.w d2,(a4)
  1911.  addq #4,a4
  1912.  swap d2
  1913.  
  1914.  add.l a5,d3
  1915.  add.l a6,d6
  1916.  add.l d5,d2
  1917.  
  1918.  dbra d4,.putinline
  1919.  
  1920. thislineflat:
  1921.  addq #4,a1
  1922.  dbra d7,putinlines
  1923.  addq #4,a1
  1924.  rts
  1925.  
  1926. putingourlines:
  1927.  
  1928.  move.l #boxbrights,a2
  1929.  move.w firstpt,d0
  1930.  lea (a2,d0.w*2),a2
  1931.  
  1932. piglloop:
  1933.  
  1934.  move.w (a1),d0
  1935.  move.w 4(a1),d1
  1936.  
  1937.  move.w (a3,d0.w*4),d2
  1938.  move.w 2(a3,d0.w*4),d3
  1939.  move.w (a3,d1.w*4),d4
  1940.  move.w 2(a3,d1.w*4),d5
  1941.  
  1942.  cmp.w d2,d4
  1943.  beq thislineflatgour
  1944.  bgt thislineontopgour
  1945.  move.l #PolyBotTab,a4
  1946.  exg d2,d4
  1947.  exg d3,d5
  1948.  
  1949.  cmp.w rightclipb,d2
  1950.  bge thislineflatgour
  1951.  cmp.w leftclipb,d4
  1952.  ble thislineflatgour
  1953.  move.w rightclipb,d6
  1954.  sub.w d4,d6
  1955.  ble.s .clipr
  1956.  move.w #0,-(a7)
  1957.  cmp.w Right(pc),d4
  1958.  ble.s .nonewbot
  1959.  move.w d4,Right
  1960.  bra.s .nonewbot
  1961.  
  1962. .clipr
  1963.  move.w d6,-(a7)
  1964.  move.w rightclipb,Right
  1965.  sub.w #1,Right
  1966. .nonewbot:
  1967.  
  1968.  move.w #0,offleftby
  1969.  move.w d2,d6
  1970.  cmp.w leftclipb,d6
  1971.  bge .okt
  1972.  move.w leftclipb,d6
  1973.  sub.w d2,d6
  1974.  move.w d6,offleftby
  1975.  add.w d2,d6
  1976. .okt:
  1977.  
  1978.  
  1979.  st drawit
  1980.  lea (a4,d6.w*8),a4
  1981.  cmp.w Left(pc),d6
  1982.  bge.s .nonewtop
  1983.  move.w d6,Left
  1984. .nonewtop
  1985.  
  1986.  sub.w d3,d5    ; dy
  1987.  swap d3
  1988.  clr.w d3    ; d2=xpos
  1989.  sub.w d2,d4    ; dx > 0
  1990.  swap d5
  1991.  clr.w d5
  1992.  asr.l #8,d5
  1993.  divs d4,d5
  1994.  ext.l d5
  1995.  asl.l #8,d5    ; dx constant
  1996.  moveq #0,d2
  1997.  move.b 2(a1),d2
  1998.  moveq #0,d6
  1999.  move.b 6(a1),d6
  2000.  sub.w d6,d2
  2001.  swap d2
  2002.  swap d6
  2003.  clr.w d2
  2004.  clr.w d6    ; d6=xbitpos
  2005.  asr.l #8,d2
  2006.  divs d4,d2
  2007.  ext.l d2
  2008.  asl.l #8,d2    ; d3=xbitconst
  2009.  move.l d5,a5    ; a5=dy constant
  2010.  move.l d2,a6    ; a6=xbitconst
  2011.  
  2012.  moveq #0,d5
  2013.  move.b 3(a1),d5
  2014.  moveq #0,d2
  2015.  move.b 7(a1),d2
  2016.  sub.w d2,d5
  2017.  swap d2
  2018.  swap d5
  2019.  clr.w d2    ; d3=ybitpos
  2020.  clr.w d5
  2021.  asr.l #8,d5
  2022.  divs d4,d5
  2023.  ext.l d5
  2024.  asl.l #8,d5    ; d4=ybitconst
  2025.  
  2026.  move.w (a2,d1.w*2),d1
  2027.  move.w (a2,d0.w*2),d0
  2028.  sub.w d1,d0
  2029.  swap d0
  2030.  swap d1
  2031.  clr.w d0
  2032.  clr.w d1
  2033.  asr.l #8,d0
  2034.  divs d4,d0
  2035.  ext.l d0
  2036.  asl.l #8,d0
  2037.  
  2038.  add.w (a7)+,d4
  2039.  sub.w offleftby(pc),d4
  2040.  blt thislineflatgour
  2041.  
  2042.  tst.w offleftby(pc)
  2043.  beq.s .noneoffleft
  2044.  move.w d4,-(a7)
  2045.  move.w offleftby(pc),d4
  2046.  dbra d4,.calcnodraw
  2047.  bra .nodrawoffleft
  2048. .calcnodraw
  2049.  add.l d0,d1
  2050.  add.l a5,d3
  2051.  add.l a6,d6
  2052.  add.l d5,d2
  2053.  dbra d4,.calcnodraw
  2054. .nodrawoffleft:
  2055.  move.w (a7)+,d4
  2056. .noneoffleft:
  2057.  
  2058. .putinline:
  2059.  
  2060.  swap d3
  2061.  move.w d3,(a4)+
  2062.  swap d3
  2063.  swap d6
  2064.  move.w d6,(a4)+
  2065.  swap d6
  2066.  swap d2
  2067.  move.w d2,(a4)+
  2068.  swap d2
  2069.  swap d1
  2070.  move.w d1,(a4)+
  2071.  swap d1
  2072.  
  2073.  add.l d0,d1
  2074.  add.l a5,d3
  2075.  add.l a6,d6
  2076.  add.l d5,d2
  2077.  
  2078.  dbra d4,.putinline
  2079.  
  2080.  bra thislineflatgour
  2081.  
  2082. thislineontopgour:
  2083.  move.l #PolyTopTab,a4
  2084.  
  2085.  cmp.w rightclipb,d2
  2086.  bge thislineflatgour
  2087.  cmp.w leftclipb,d4
  2088.  ble thislineflatgour
  2089.  move.w rightclipb,d6
  2090.  sub.w d4,d6
  2091.  ble.s .clipr
  2092.  move.w #0,-(a7)
  2093.  cmp.w Right(pc),d4
  2094.  ble.s .nonewbot
  2095.  move.w d4,Right
  2096.  bra.s .nonewbot
  2097.  
  2098. .clipr
  2099.  move.w d6,-(a7)
  2100.  move.w rightclipb,Right
  2101.  sub.w #1,Right
  2102. .nonewbot:
  2103.  
  2104.  move.w #0,offleftby
  2105.  move.w d2,d6
  2106.  cmp.w leftclipb,d6
  2107.  bge .okt
  2108.  move.w leftclipb,d6
  2109.  sub.w d2,d6
  2110.  move.w d6,offleftby
  2111.  add.w d2,d6
  2112. .okt:
  2113.  
  2114.  st drawit
  2115.  lea (a4,d6.w*8),a4
  2116.  cmp.w Left(pc),d6
  2117.  bge.s .nonewtop
  2118.  move.w d6,Left
  2119. .nonewtop
  2120.  
  2121.  sub.w d3,d5    ; dy
  2122.  swap d3
  2123.  clr.w d3    ; d2=xpos
  2124.  sub.w d2,d4    ; dx > 0
  2125.  swap d5
  2126.  clr.w d5
  2127.  asr.l #8,d5
  2128.  divs d4,d5
  2129.  ext.l d5
  2130.  asl.l #8,d5    ; dx constant
  2131.  moveq #0,d2
  2132.  move.b 6(a1),d2
  2133.  moveq #0,d6
  2134.  move.b 2(a1),d6
  2135.  sub.w d6,d2
  2136.  swap d2
  2137.  swap d6
  2138.  clr.w d2
  2139.  clr.w d6    ; d6=xbitpos
  2140.  asr.l #8,d2
  2141.  divs d4,d2
  2142.  ext.l d2
  2143.  asl.l #8,d2    ; d3=xbitconst
  2144.  move.l d5,a5    ; a5=dy constant
  2145.  move.l d2,a6    ; a6=xbitconst
  2146.  
  2147.  moveq #0,d5
  2148.  move.b 7(a1),d5
  2149.  moveq #0,d2
  2150.  move.b 3(a1),d2
  2151.  sub.w d2,d5
  2152.  swap d2
  2153.  swap d5
  2154.  clr.w d2    ; d3=ybitpos
  2155.  clr.w d5
  2156.  asr.l #8,d5
  2157.  divs d4,d5
  2158.  ext.l d5
  2159.  asl.l #8,d5    ; d4=ybitconst
  2160.  
  2161.  move.w (a2,d1.w*2),d1
  2162.  move.w (a2,d0.w*2),d0
  2163.  sub.w d0,d1
  2164.  swap d0
  2165.  swap d1
  2166.  clr.w d0
  2167.  clr.w d1
  2168.  asr.l #8,d1
  2169.  divs d4,d1
  2170.  ext.l d1
  2171.  asl.l #8,d1
  2172.  
  2173.  add.w (a7)+,d4
  2174.  sub.w offleftby(pc),d4
  2175.  blt.s thislineflatgour
  2176.  
  2177.  tst.w offleftby(pc)
  2178.  beq.s .noneoffleft
  2179.  move.w d4,-(a7)
  2180.  move.w offleftby(pc),d4
  2181.  dbra d4,.calcnodraw
  2182.  bra .nodrawoffleft
  2183. .calcnodraw
  2184.  add.l d1,d0
  2185.  add.l a5,d3
  2186.  add.l a6,d6
  2187.  add.l d5,d2
  2188.  dbra d4,.calcnodraw
  2189. .nodrawoffleft:
  2190.  move.w (a7)+,d4
  2191. .noneoffleft:
  2192.  
  2193.  
  2194. .putinline:
  2195.  
  2196.  swap d3
  2197.  move.w d3,(a4)+
  2198.  swap d3
  2199.  swap d6
  2200.  move.w d6,(a4)+
  2201.  swap d6
  2202.  swap d2
  2203.  move.w d2,(a4)+
  2204.  swap d2
  2205.  swap d0
  2206.  move.w d0,(a4)+
  2207.  swap d0
  2208.  
  2209.  add.l d1,d0
  2210.  add.l a5,d3
  2211.  add.l a6,d6
  2212.  add.l d5,d2
  2213.  
  2214.  dbra d4,.putinline
  2215.  
  2216. thislineflatgour:
  2217.  addq #4,a1
  2218.  dbra d7,piglloop
  2219.  addq #4,a1
  2220.  rts
  2221.  
  2222. offleftby: dc.w 0
  2223. Left: dc.w 0
  2224. Right: dc.w 0
  2225.  
  2226. POINTER_TO_POINTERS: dc.l 0
  2227. START_OF_OBJ: dc.l 0
  2228. num_points: dc.w 0
  2229.  
  2230. POLYOBJECTS:
  2231.  dc.l Spider_des
  2232.  dc.l Medi_des
  2233.  dc.l Exit_des
  2234.  dc.l Crate_des
  2235.  dc.l Terminal_des
  2236.  dc.l Blue_des
  2237.  dc.l Green_des
  2238.  dc.l Red_des
  2239.  dc.l Yellow_des
  2240.  dc.l Gas_des
  2241.  
  2242. Spider_des:
  2243.  incbin "ab3:vectobj/robot"
  2244. Medi_des:
  2245.  incbin "ab3:includes/medipac.vec"
  2246. Exit_des:
  2247.  incbin "ab3:vectobj/exitsign
  2248. Crate_des:
  2249.  incbin "ab3:includes/crate.vec"
  2250. Terminal_des:
  2251.  incbin "ab3:includes/terminal.vec"
  2252. Blue_des:
  2253.  incbin "ab3:vectobj/blueind"
  2254. Green_des:
  2255.  incbin "ab3:vectobj/Greenind"
  2256. Red_des:
  2257.  incbin "ab3:vectobj/Redind"
  2258. Yellow_des:
  2259.  incbin "ab3:vectobj/yellowind"
  2260. Gas_des:
  2261.  incbin "ab3:vectobj/gaspipe"
  2262.  
  2263. boxonscr:
  2264.  ds.l 250*2
  2265. boxrot: ds.l 3*250
  2266.  
  2267. boxbrights: 
  2268.     dc.w 0
  2269.     dc.w 12
  2270.     dc.w 12
  2271.     dc.w 12
  2272.  dc.w 12
  2273.     dc.w 0
  2274.     ds.w 50
  2275.  
  2276. boxang: dc.w 0 
  2277.  
  2278.  ds.w 96*4
  2279. PolyBotTab: ds.w 96*4
  2280.  ds.w 96*4
  2281. PolyTopTab: ds.w 96*4
  2282.  ds.w 96*4
  2283.  
  2284. offset:
  2285.  dc.w 0
  2286. timer:
  2287.  dc.w 0
  2288.  
  2289. Objects:
  2290. ; Lookup table for OBJECT GRAPHIC TYPE
  2291. ; in object data (offset 8)
  2292. ;0
  2293.  dc.l ALIEN_WAD,ALIEN_PTR,ALIEN_FRAMES,ALIEN_PAL
  2294. ;1
  2295.  dc.l PICKUPS_WAD,PICKUPS_PTR,PICKUPS_FRAMES,PICKUPS_PAL
  2296. ;2
  2297.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,BIGBULLET_FRAMES,BIGBULLET_PAL
  2298. ;3
  2299.  dc.l UGLYMONSTER_WAD,UGLYMONSTER_PTR,UGLYMONSTER_FRAMES,UGLYMONSTER_PAL
  2300. ;4
  2301.  dc.l FLYINGMONSTER_WAD,FLYINGMONSTER_PTR,FLYINGMONSTER_FRAMES,FLYINGMONSTER_PAL
  2302. ;5
  2303.  dc.l KEYS_WAD,KEYS_PTR,KEYS_FRAMES,KEYS_PAL
  2304. ;6
  2305.  dc.l ROCKETS_WAD,ROCKETS_PTR,ROCKETS_FRAMES,ROCKETS_PAL
  2306. ;7
  2307.  dc.l BARREL_WAD,BARREL_PTR,BARREL_FRAMES,BARREL_PAL
  2308. ;8
  2309.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,EXPLOSION_FRAMES,EXPLOSION_PAL
  2310. ;9
  2311.  dc.l GUNS_WAD,GUNS_PTR,GUNS_FRAMES,GUNS_PAL
  2312. ;10:
  2313.  dc.l MARINE_WAD,MARINE_PTR,MARINE_FRAMES,MARINE_PAL
  2314. ;11:
  2315.  dc.l BIGALIEN_WAD,BIGALIEN_PTR,BIGALIEN_FRAMES,BIGALIEN_PAL
  2316. ;12:
  2317.  dc.l 0,0,LAMPS_FRAMES,LAMPS_PAL
  2318. ;13:
  2319.  dc.l 0,0,WORM_FRAMES,WORM_PAL
  2320. ;14:
  2321.  dc.l 0,0,BIGCLAWS_FRAMES,BIGCLAWS_PAL
  2322. ;15:
  2323.  dc.l 0,0,TREE_FRAMES,TREE_PAL
  2324. ;16:
  2325.  dc.l 0,0,TOUGHMARINE_FRAMES,TOUGHMARINE_PAL
  2326. ;17:
  2327.  dc.l 0,0,FLAMEMARINE_FRAMES,FLAMEMARINE_PAL
  2328.  
  2329. ALIEN_WAD:
  2330. ; incbin "ALIEN2.wad"
  2331. ALIEN_PTR:
  2332. ; incbin "ALIEN2.ptr"
  2333. ALIEN_FRAMES:
  2334. ; walking=0-3
  2335.  dc.w 0,0
  2336.  dc.w 64*4,0 
  2337.  dc.w 64*4*2,0
  2338.  dc.w 64*4*3,0
  2339.  dc.w 64*4*4,0
  2340.  dc.w 64*4*5,0
  2341.  dc.w 64*4*6,0
  2342.  dc.w 64*4*7,0
  2343.  dc.w 64*4*8,0
  2344.  dc.w 64*4*9,0
  2345.  dc.w 64*4*10,0
  2346.  dc.w 64*4*11,0
  2347.  dc.w 64*4*12,0
  2348.  dc.w 64*4*13,0
  2349.  dc.w 64*4*14,0
  2350.  dc.w 64*4*15,0
  2351. ;Exploding=16-31
  2352.  dc.w 4*(64*16),0
  2353.  dc.w 4*(64*16+16),0
  2354.  dc.w 4*(64*16+32),0
  2355.  dc.w 4*(64*16+48),0
  2356.  
  2357.  dc.w 4*(64*16),16
  2358.  dc.w 4*(64*16+16),16
  2359.  dc.w 4*(64*16+32),16
  2360.  dc.w 4*(64*16+48),16
  2361.  
  2362.  dc.w 4*(64*16),32
  2363.  dc.w 4*(64*16+16),32
  2364.  dc.w 4*(64*16+32),32
  2365.  dc.w 4*(64*16+48),32
  2366.  
  2367.  dc.w 4*(64*16),48
  2368.  dc.w 4*(64*16+16),48
  2369.  dc.w 4*(64*16+32),48
  2370.  dc.w 4*(64*16+48),48
  2371. ;dying=32-33
  2372.  dc.w 64*4*17,0
  2373.  dc.w 64*4*18,0
  2374.  
  2375.  
  2376. ALIEN_PAL:
  2377.  incbin "alien2.pal"
  2378.  
  2379. PICKUPS_WAD:
  2380. ; incbin "Pickups.wad"
  2381. PICKUPS_PTR:
  2382. ; incbin "PICKUPS.ptr"
  2383. PICKUPS_FRAMES:
  2384. ; medikit=0
  2385.  dc.w 0,0
  2386. ; big gun=1
  2387.  dc.w 0,32
  2388. ; bullet=2
  2389.  dc.w 64*4,32
  2390. ; Ammo=3
  2391.  dc.w 32*4,0 
  2392. ;battery=4
  2393.  dc.w 64*4,0
  2394. ;Rockets=5
  2395.  dc.w 192*4,0
  2396. ;gunpop=6-16
  2397.  dc.w 128*4,0
  2398.  dc.w (128+16)*4,0
  2399.  dc.w (128+32)*4,0
  2400.  dc.w (128+48)*4,0
  2401.  dc.w 128*4,16
  2402.  dc.w (128+16)*4,16
  2403.  dc.w (128+32)*4,16
  2404.  dc.w (128+48)*4,16
  2405.  dc.w 128*4,32
  2406.  dc.w (128+16)*4,32
  2407.  dc.w (128+32)*4,32
  2408.  dc.w (64+16)*4,32
  2409.  dc.w (64*4),48
  2410.  dc.w (64+16)*4,48
  2411.  
  2412. ; RocketLauncher=20
  2413.  dc.w (64+32)*4,0
  2414.  
  2415. ;grenade = 21-24
  2416.  dc.w 64*4,32
  2417.  dc.w (64+16)*4,32
  2418.  dc.w (64+16)*4,48
  2419.  dc.w 64*4,48
  2420.  
  2421. ; shotgun = 25
  2422.  dc.w 128*4,32
  2423.  
  2424. ; grenade launcher =26
  2425.  dc.w 256*4,0
  2426.  
  2427. ; shotgun shells*4=27
  2428.  dc.w 64*3*4,32
  2429. ; shotgun shells*20=28
  2430.  dc.w (64*3+32)*4,0
  2431. ; grenade clip=29
  2432.  dc.w (64*3+32)*4,32
  2433.  
  2434.  
  2435. PICKUPS_PAL:
  2436.  incbin "PICKUPS.PAL"
  2437.  
  2438. BIGBULLET_WAD:
  2439. ; incbin "bigbullet.wad"
  2440. BIGBULLET_PTR:
  2441. ; incbin "bigbullet.ptr"
  2442. BIGBULLET_FRAMES:
  2443.  dc.w 0,0
  2444.  dc.w 0,32
  2445.  dc.w 32*4,0
  2446.  dc.w 32*4,32
  2447.  dc.w 64*4,0
  2448.  dc.w 64*4,32
  2449.  dc.w 96*4,0
  2450.  dc.w 96*4,32
  2451.  
  2452.  dc.w 128*4,0
  2453.  dc.w 128*4,32
  2454.  dc.w 32*5*4,0
  2455.  dc.w 32*5*4,32
  2456.  dc.w 32*6*4,0
  2457.  dc.w 32*6*4,32
  2458.  dc.w 32*7*4,0
  2459.  dc.w 32*7*4,32
  2460.  dc.w 32*8*4,0
  2461.  dc.w 32*8*4,32
  2462.  dc.w 32*9*4,0
  2463.  dc.w 32*9*4,32
  2464. BIGBULLET_PAL
  2465.  incbin "bigbullet.pal"
  2466.  
  2467. EXPLOSION_FRAMES:
  2468.  dc.w 0,0
  2469.  dc.w 64*4,0
  2470.  dc.w 64*4*2,0
  2471.  dc.w 64*4*3,0
  2472.  dc.w 64*4*4,0
  2473.  dc.w 64*4*5,0
  2474.  dc.w 64*4*6,0
  2475.  dc.w 64*4*7,0
  2476.  dc.w 64*4*8,0
  2477.  
  2478. EXPLOSION_PAL
  2479.  incbin "explosion.pal"
  2480.  
  2481. UGLYMONSTER_WAD:
  2482. ; incbin "uglymonster.wad"
  2483. UGLYMONSTER_PTR:
  2484. ; incbin "uglymonster.ptr"
  2485. UGLYMONSTER_FRAMES:
  2486.  dc.w 0,0
  2487. UGLYMONSTER_PAL:
  2488.  incbin "uglymonster.pal"
  2489.  
  2490. FLYINGMONSTER_WAD:
  2491. ; incbin "FLYINGalien.wad"
  2492. FLYINGMONSTER_PTR:
  2493. ; incbin "FLYINGalien.ptr"
  2494. FLYINGMONSTER_FRAMES:
  2495.  dc.w 0,0
  2496.  dc.w 64*4,0 
  2497.  dc.w 64*4*2,0 
  2498.  dc.w 64*4*3,0 
  2499.  dc.w 64*4*4,0 
  2500.  dc.w 64*4*5,0 
  2501.  dc.w 64*4*6,0 
  2502.  dc.w 64*4*7,0 
  2503.  dc.w 64*4*8,0 
  2504.  dc.w 64*4*9,0 
  2505.  dc.w 64*4*10,0 
  2506.  dc.w 64*4*11,0 
  2507.  dc.w 64*4*12,0 
  2508.  dc.w 64*4*13,0 
  2509.  dc.w 64*4*14,0 
  2510.  dc.w 64*4*15,0 
  2511.  dc.w 64*4*16,0 
  2512.  dc.w 64*4*17,0 
  2513.  dc.w 64*4*18,0 
  2514.  dc.w 64*4*19,0 
  2515.  dc.w 64*4*20,0 
  2516.  
  2517. FLYINGMONSTER_PAL:
  2518.  incbin "FLYINGalien.pal"
  2519.  
  2520. KEYS_WAD:
  2521. ; incbin "keys.wad"
  2522. KEYS_PTR:
  2523. ; incbin "KEYS.PTR"
  2524. KEYS_FRAMES:
  2525.  dc.w 0,0
  2526.  dc.w 0,32
  2527.  dc.w 32*4,0
  2528.  dc.w 32*4,32
  2529. KEYS_PAL:
  2530.  incbin "keys.pal"
  2531.  
  2532. ROCKETS_WAD:
  2533. ; incbin "ROCKETS.wad"
  2534. ROCKETS_PTR:
  2535. ; incbin "ROCKETS.ptr"
  2536. ROCKETS_FRAMES:
  2537. ;rockets=0 to 3
  2538.  dc.w 0,0
  2539.  dc.w 32*4,0
  2540.  dc.w 0,32
  2541.  dc.w 32*4,32
  2542.  
  2543. ;Green bullets = 4 to 7
  2544.  dc.w 64*4,0
  2545.  dc.w (64+32)*4,0
  2546.  dc.w 64*4,32
  2547.  dc.w (64+32)*4,32
  2548.  
  2549. ;Blue Bullets = 8 to 11
  2550.  dc.w 128*4,0
  2551.  dc.w (128+32)*4,0
  2552.  dc.w 128*4,32
  2553.  dc.w (128+32)*4,32
  2554.  
  2555.  
  2556. ROCKETS_PAL:
  2557.  incbin "ROCKETS.pal"
  2558.  
  2559. BARREL_WAD:
  2560. ; incbin "BARREL.wad"
  2561. BARREL_PTR:
  2562. ; incbin "BARREL.ptr"
  2563. BARREL_FRAMES:
  2564.  dc.w 0,0
  2565.  
  2566. BARREL_PAL: incbin "BARREL.pal"
  2567.  
  2568. GUNS_WAD:
  2569. ; incbin "guns.wad"
  2570. GUNS_PTR:
  2571. ; incbin "GUNS.PTR"
  2572. GUNS_FRAMES:
  2573.  
  2574.  dc.w 96*4*20,0
  2575.  dc.w 96*4*21,0
  2576.  dc.w 96*4*22,0
  2577.  dc.w 96*4*23,0
  2578.  
  2579.  dc.w 96*4*4,0
  2580.  dc.w 96*4*5,0
  2581.  dc.w 96*4*6,0
  2582.  dc.w 96*4*7,0
  2583.  
  2584.  dc.w 96*4*16,0
  2585.  dc.w 96*4*17,0
  2586.  dc.w 96*4*18,0
  2587.  dc.w 96*4*19,0
  2588.  
  2589.  dc.w 96*4*12,0
  2590.  dc.w 96*4*13,0
  2591.  dc.w 96*4*14,0
  2592.  dc.w 96*4*15,0
  2593.  
  2594.  dc.w 96*4*24,0
  2595.  dc.w 96*4*25,0
  2596.  dc.w 96*4*26,0
  2597.  dc.w 96*4*27,0
  2598.  
  2599.  dc.w 0,0
  2600.  dc.w 0,0
  2601.  dc.w 0,0
  2602.  dc.w 0,0
  2603.  
  2604.  dc.w 0,0
  2605.  dc.w 0,0
  2606.  dc.w 0,0
  2607.  dc.w 0,0
  2608.  
  2609.  dc.w 96*4*0,0
  2610.  dc.w 96*4*1,0
  2611.  dc.w 96*4*2,0
  2612.  dc.w 96*4*3,0 
  2613.  
  2614. GUNS_PAL: incbin "newgunsinhand.pal"
  2615.  
  2616. MARINE_WAD:
  2617. ; incbin "newMarine.wad"
  2618. MARINE_PTR:
  2619. ; incbin "newMARINE.ptr"
  2620. MARINE_FRAMES:
  2621.  dc.w 0,0
  2622.  dc.w 64*4,0
  2623.  dc.w (64*2)*4,0
  2624.  dc.w (64*3)*4,0
  2625.  dc.w (64*4)*4,0
  2626.  dc.w (64*5)*4,0
  2627.  dc.w (64*6)*4,0
  2628.  dc.w (64*7)*4,0
  2629.  dc.w (64*8)*4,0
  2630.  dc.w (64*9)*4,0
  2631.  dc.w (64*10)*4,0
  2632.  dc.w (64*11)*4,0
  2633.  dc.w (64*12)*4,0
  2634.  dc.w (64*13)*4,0
  2635.  dc.w (64*14)*4,0
  2636.  dc.w (64*15)*4,0
  2637.  dc.w (64*16)*4,0
  2638.  dc.w (64*17)*4,0
  2639.  dc.w (64*18)*4,0
  2640. MARINE_PAL:
  2641.  incbin "newmarine.pal"
  2642. TOUGHMARINE_FRAMES:
  2643.  dc.w 0,0
  2644.  dc.w 64*4,0
  2645.  dc.w (64*2)*4,0
  2646.  dc.w (64*3)*4,0
  2647.  dc.w (64*4)*4,0
  2648.  dc.w (64*5)*4,0
  2649.  dc.w (64*6)*4,0
  2650.  dc.w (64*7)*4,0
  2651.  dc.w (64*8)*4,0
  2652.  dc.w (64*9)*4,0
  2653.  dc.w (64*10)*4,0
  2654.  dc.w (64*11)*4,0
  2655.  dc.w (64*12)*4,0
  2656.  dc.w (64*13)*4,0
  2657.  dc.w (64*14)*4,0
  2658.  dc.w (64*15)*4,0
  2659.  dc.w (64*16)*4,0
  2660.  dc.w (64*17)*4,0
  2661.  dc.w (64*18)*4,0
  2662. TOUGHMARINE_PAL:
  2663.  incbin "toughmutant.pal"
  2664. FLAMEMARINE_FRAMES:
  2665.  dc.w 0,0
  2666.  dc.w 64*4,0
  2667.  dc.w (64*2)*4,0
  2668.  dc.w (64*3)*4,0
  2669.  dc.w (64*4)*4,0
  2670.  dc.w (64*5)*4,0
  2671.  dc.w (64*6)*4,0
  2672.  dc.w (64*7)*4,0
  2673.  dc.w (64*8)*4,0
  2674.  dc.w (64*9)*4,0
  2675.  dc.w (64*10)*4,0
  2676.  dc.w (64*11)*4,0
  2677.  dc.w (64*12)*4,0
  2678.  dc.w (64*13)*4,0
  2679.  dc.w (64*14)*4,0
  2680.  dc.w (64*15)*4,0
  2681.  dc.w (64*16)*4,0
  2682.  dc.w (64*17)*4,0
  2683.  dc.w (64*18)*4,0
  2684. FLAMEMARINE_PAL:
  2685.  incbin "flamemutant.pal"
  2686.  
  2687.  
  2688. BIGALIEN_WAD:
  2689. ; incbin "BIGSCARYALIEN.wad"
  2690. BIGALIEN_PTR:
  2691. ; incbin "BIGSCARYALIEN.ptr"
  2692. BIGALIEN_FRAMES:
  2693. ; walking=0-3
  2694.  dc.w 0,0
  2695.  dc.w 128*4,0
  2696.  dc.w 128*4*2,0
  2697.  dc.w 128*4*3,0
  2698. BIGALIEN_PAL:
  2699.  incbin "BIGSCARYALIEN.pal"
  2700.  
  2701. LAMPS_FRAMES:
  2702.  dc.w 0,0
  2703. LAMPS_PAL:
  2704.  incbin "LAMPS.pal"
  2705.  
  2706. WORM_FRAMES:
  2707.  dc.w 0,0
  2708.  dc.w 90*4,0
  2709.  dc.w 90*4*2,0
  2710.  dc.w 90*4*3,0
  2711.  dc.w 90*4*4,0
  2712.  dc.w 90*4*5,0
  2713.  dc.w 90*4*6,0
  2714.  dc.w 90*4*7,0
  2715.  dc.w 90*4*8,0
  2716.  dc.w 90*4*9,0
  2717.  dc.w 90*4*10,0
  2718.  dc.w 90*4*11,0
  2719.  dc.w 90*4*12,0
  2720.  dc.w 90*4*13,0
  2721.  dc.w 90*4*14,0
  2722.  dc.w 90*4*15,0
  2723.  dc.w 90*4*16,0
  2724.  dc.w 90*4*17,0
  2725.  dc.w 90*4*18,0
  2726.  dc.w 90*4*19,0
  2727.  dc.w 90*4*20,0
  2728. WORM_PAL:
  2729.  incbin "worm.pal"
  2730.  
  2731. BIGCLAWS_FRAMES:
  2732.  dc.w 0,0
  2733.  dc.w 128*4,0
  2734.  dc.w 128*4*2,0
  2735.  dc.w 128*4*3,0
  2736.  dc.w 128*4*4,0
  2737.  dc.w 128*4*5,0
  2738.  dc.w 128*4*6,0
  2739.  dc.w 128*4*7,0
  2740.  dc.w 128*4*8,0
  2741.  dc.w 128*4*9,0
  2742.  dc.w 128*4*10,0
  2743.  dc.w 128*4*11,0
  2744.  dc.w 128*4*12,0
  2745.  dc.w 128*4*13,0
  2746.  dc.w 128*4*14,0
  2747.  dc.w 128*4*15,0
  2748.  dc.w 128*4*16,0
  2749.  dc.w 128*4*17,0
  2750. BIGCLAWS_PAL:
  2751.  incbin "bigclaws.pal"
  2752.  
  2753. TREE_FRAMES:
  2754.  dc.w 0,0
  2755.  dc.w 64*4,0
  2756.  dc.w 64*2*4,0
  2757.  dc.w 64*3*4,0
  2758.  
  2759.  dc.w 0,0
  2760.  dc.w 64*4,0
  2761.  dc.w 64*2*4,0
  2762.  dc.w 64*3*4,0
  2763.  
  2764.  
  2765.  dc.w 0,0
  2766.  dc.w 64*4,0
  2767.  dc.w 64*2*4,0
  2768.  dc.w 64*3*4,0
  2769.  
  2770.  
  2771.  dc.w 0,0
  2772.  dc.w 64*4,0
  2773.  dc.w 64*2*4,0
  2774.  dc.w 64*3*4,0
  2775.  
  2776.  dc.w 0,0
  2777.  dc.w 0,0
  2778.  
  2779.  dc.w 32*8*4,0
  2780.  dc.w 32*9*4,0
  2781.  dc.w 32*10*4,0
  2782.  dc.w 32*11*4,0
  2783.  
  2784. TREE_PAL:
  2785.  incbin "tree.pal"
  2786.  
  2787.  
  2788.  even
  2789. ObAdds:
  2790. ; incbin "ALIEN1.ptr"
  2791. objpal:
  2792. ; incbin "ALIEN1.pal"
  2793. TextureMaps:
  2794.  incbin "Texturemaps"
  2795. TexturePal:
  2796.  incbin "texturepalscaled"
  2797.  
  2798. testval: dc.l 0